Ich habe einen Datensatz wie unten angegeben Name col1 col2 a 10.3 10.9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 Ich möchte col1 und col2 meines df vergleichen und ich möchte eine weitere Spalte erstellen, in der ich beim Vergleichen von col1- und col2-Werten, wenn der Wert von col2 von col1 steigt, in meine Spalte dort einen Anstieg neben ihnen eingeben möchte und wenn sie es sind abnehmend dann möchte ich abnehmend schreiben und keine Änderungen, wenn sie gleich sind und ich möchte meine Ausgabe so Name col1 col2 col3 a 10,3 10,9 steigt b 11 15 ansteigend c 20 7.2 abnehmend d 6.2 6.2 keine Änderung e 5.3 5.4 steigt f 4.5 4.0 abnehmend
2021-01-31 08:14:53
Mit dplyr: df%>% mutieren (Col3 = ifelse (col2 == col1, "Keine Änderung", ifelse (col2> col1, "ansteigen", "abnehmen"))) Oder verwenden Sie case_when, wie von @akrun vorgeschlagen: df%>% mutieren (Col3 = case_when (col1 == col2 ~ "keine Änderung", col2> col1 ~ "Zunehmend", TRUE ~ "abnehmend")) Ergebnis: Name col1 col2 Col3 1 a 10,3 10,9 ansteigend 2 b 11,0 15,0 erhöht 3 c 20,0 7,2 abnehmend 4 d 6.2 6.2 keine Änderung 5 e 5.3 5.4 ansteigend 6 f 4,5 4,0 abnehmend Daten: df <-Struktur (Liste (Name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Wir können col1 von col2 subtrahieren und dann mit dem Vorzeichen Werte zuweisen df $ col3 <- c ("abnehmend", "keine Änderung", "zunehmend") [Vorzeichen (df $ col1 - df $ col2) + 2] df # name col1 col2 col3 # 1 a 10,3 10,9 abnehmend # 2 b 11.0 15.0 abnehmend # 3 c 20.0 7.2 steigt # 4 d 6.2 6.2 keine Änderung # 5 e 5.3 5.4 abnehmend # 6 f 4.5 4.0 steigt Oder mit dplyr können wir case_when verwenden Bibliothek (dplyr) df%>% mutieren (col3 = case_when (col1 == col2 ~ "keine Änderung", col1> col2 ~ "ansteigend", TRUE ~ "abnehmend")) | Basis R. df $ col3 <-with (df, ifelse (col1> col2, "abnehmend", ifelse (col1